// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/**
 *
 * 核心基础类库，包含所有运行Dart应用必不可少的系统类，
 * 如内置类型、集合，以及其它核心功能。
 *
 * 这个库是自动导入的。
 *
 * 库中的一些类，例如[String]和[num]，
 * 支持Dart的内置数据类型。
 * 其他类，如[List]和[Map]，为管理对象集合提供了数据结构。
 * 还有常用的数据类型，如 URI、date、time和error。
 *
 * ## Numbers 和 booleans
 *
 * [int]和[double]提供了对Dart内置数值数据类型的支持：
 * 分别是整型和双精度浮点数。
 * [bool]类型的对象要么是true，要么是false。
 * 这些类型的变量可以用常量进行构建：
 *
 *     int meaningOfLife = 42;
 *     double valueOfPi  = 3.141592;
 *     bool visible      = true;
 *
 * ## Strings 和 regular expressions
 *
 * [String]是不可变的，并代表一个字符序列。
 *
 *     String shakespeareQuote = "All the world's a stage, ...";
 *
 * [StringBuffer]提供了一种高效地构建字符串的方式。
 *
 *     StringBuffer moreShakespeare = new StringBuffer();
 *     moreShakespeare.write('And all the men and women ');
 *     moreShakespeare.write('merely players; ...');
 *
 * String和StringBuffer类实现了字符串的连接、插值，以及其他字符串操作。
 *
 *     String philosophy = 'Live on ';
 *     String get palindrome => philosophy + philosophy.split('').reversed.join();
 *
 * [RegExp]实现了Dart正则表达式功能，为文本内的匹配模式提供了语法。例如，
 * 下面是一个匹配字符串中一个或多个数字的正则表达式：
 *
 *     var numbers = new RegExp(r'\d+');
 *
 * Dart正则表达式与JavaScript正则表达式一样，具有相同的语法和语义，
 * 可参见JavaScript正则表达式的规范
 * <http://ecma-international.org/ecma-262/5.1/#sec-15.10>
 *
 * ## Collections
 *
 * dart:core库提供了基本的集合，如[List]、[Map]和[Set]。
 *
 * List是对象的有序集合，有时候也被称为数组。当你需要通过索引来获取对象时，使用List。
 *
 *     List superheroes = [ 'Batman', 'Superman', 'Harry Potter' ];
 *
 * Set是不重复的、无序的对象集合，你并不能通过索引（位置）来得到数据。添加已经存在的重复项时，操作无效。
 *
 *     Set villains = new Set();
 *     villains.add('Joker');
 *     villains.addAll( ['Lex Luther', 'Voldemort'] );
 *
 * Map是无序的Key-Value键值对集合。Map有时被称为关联数组，因为Map为了便于检索，关联了键和值。
 * Key是唯一的、不重复的。当你需要通过唯一标识符来获取对象时，使用Map。
 *
 *     Map sidekicks = { 'Batman': 'Robin',
 *                       'Superman': 'Lois Lane',
 *                       'Harry Potter': 'Ron and Hermione' };
 *
 * 除了这些类，dart:core还包含了[Iterable]，一个定义了对象集合常用功能的接口。
 * 包括能够对集合中的每个元素运行函数，对每个元素应用测试，检索对象，确定长度等功能。
 *
 * Iterable通过List和Set被实现，并使用Map用于它的keys和values。
 *
 * 对于其他类型的集合，查看库
 * [dart:collection](#dart-collection).
 *
 * ## Date 和 time
 *
 * [DateTime]表示一个时间点，而
 * [Duration]表示一个时间跨度、时间段。
 *
 * 你可以通过构造函数或解析正确的格式化字符串，来创建DateTime。
 *
 *     DateTime now = new DateTime.now();
 *     DateTime berlinWallFell = new DateTime(1989, 11, 9);
 *     DateTime moonLanding = DateTime.parse("1969-07-20");
 *
 * 通过指定单个的时间单位来创建Duration对象。
 *
 *     Duration timeRemaining = new Duration(hours:56, minutes:14);
 *
 * 除了DateTime和Duration,
 * dart:core包含有[Stopwatch]类，用于测量所用时间。
 *
 * ## Uri
 *
 * [Uri]对象表示一个统一资源标识符（Uniform Resource Identifier）， 用于标识一个Web资源。
 *
 *     Uri dartlang = Uri.parse('http://dartlang.org/');
 *
 * ## Errors
 *
 * [Error]类表示在运行时发生的错误，子类表示特定的错误种类。
 *
 * ## 其他文档
 *
 * 关于如何使用内置类型的更多信息，参见
 * [Dart: Up and Running](http://www.dartlang.org/docs/dart-up-and-running/)
 * 的第2章
 * [Built-in Types](http://www.dartlang.org/docs/dart-up-and-running/contents/ch02.html#built-in-types)
 *
 * 关于本包中更多类的信息，查看 [dart:core - Numbers, Collections, Strings, and
 * More](https://www.dartlang.org/docs/dart-up-and-running/ch03.html#dartcore---numbers-collections-strings-and-more)。
 *
 * [Dart Language Specification](http://www.dartlang.org/docs/spec/)
 * 中包含了更多的技术细节。
 */
library dart.core;

import "dart:collection";
import "dart:_internal" hide Symbol;
import "dart:_internal" as internal show Symbol;
import "dart:convert" show
  Encoding, ASCII, LATIN1, UTF8,
  BASE64, StringConversionSink, ChunkedConversionSink;
import "dart:math" show Random;  // Used by List.shuffle.
import "dart:async" show Stream, Future;  // Used by Resource.
import "dart:typed_data" show Uint8List;

part "annotations.dart";
part "bool.dart";
part "comparable.dart";
part "date_time.dart";
part "double.dart";
part "duration.dart";
part "errors.dart";
part "exceptions.dart";
part "expando.dart";
part "function.dart";
part "identical.dart";
part "int.dart";
part "invocation.dart";
part "iterable.dart";
part "iterator.dart";
part "list.dart";
part "map.dart";
part "null.dart";
part "num.dart";
part "object.dart";
part "pattern.dart";
part "print.dart";
part "regexp.dart";
part "resource.dart";
part "set.dart";
part "sink.dart";
part "stacktrace.dart";
part "stopwatch.dart";
part "string.dart";
part "string_buffer.dart";
part "string_sink.dart";
part "symbol.dart";
part "type.dart";
part "uri.dart";
